#ifndef INTERFAZ_H_
#define INTERFAZ_H_
#include "../Manejadores/ManejadorVotante.h"
#include "../Manejadores/ManejadorAdministrador.h"
#include "../Manejadores/ManejadorConteo.h"
#include "../Archivos/Log.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <algorithm>
#include <fstream>
#include "IAbm.h"
#include "ListaABM.h"
#include "AdministradorABM.h"
#include "DistritoABM.h"
#include "VotanteABM.h"
#include "EleccionABM.h"
#include "CandidatoABM.h"
#include "CargoABM.h"

using namespace Manejadores;
using namespace Entidades;
using namespace ABM;

using namespace std;

namespace Interfaces{

class InterfazAdministrador {
private:
	int opcion;
	string usuario;
	string contrasenia;

	bool menuPantallaLogin();
	void menuAdministrador();
	void menuABMVotante();
	void menuABMDistrito();
	void menuABMCargo();
	void menuABMEleccion();
	void menuABMCandidato();
	void menuABMLista();
	void menuLogs();
	void menuReportes();
	bool validarUsuarioYContraseniaAdmin(string user, string clave);

	bool menuReportePorDistrito();
	bool menuReportePorEleccion();
	bool menuReportePorLista();

	void altaMasivaDatos();
	void llamadoAltaMasiva(IAbm* entidad, string nombreEntidad);

	void menuVotantesAutomaticos();

public:

	InterfazAdministrador();

	void menuPrincipal();


	virtual ~InterfazAdministrador();
};
}
#endif
